/*
 * Created by LiuYou on 2020/12/14.
 *
 */

#ifndef EFFECTIVE_CPP_2_COMPUTER_HPP
#define EFFECTIVE_CPP_2_COMPUTER_HPP


#include <memory>

namespace Display {
    class Display;
}
namespace GraphicsCard {
    class GraphicsCard;
}
namespace Computer {
    using Display::Display;
    using GraphicsCard::GraphicsCard;

    class Computer {
    public:
//        Computer(std::shared_ptr<Display> sharedPtrDisplay, std::shared_ptr<GraphicsCard> sharedPtrGraphicsCard);
        Computer(const std::shared_ptr<Display>& sharedPtrDisplay,
                 const std::shared_ptr<GraphicsCard>& sharedPtrGraphicsCard);

        virtual ~Computer();

        Display* getDisplay();

        GraphicsCard getGraphicsCard();

    private:
        std::shared_ptr<Display> sharedPtrDisplay;
        std::shared_ptr<GraphicsCard> sharedPtrGraphicsCard;

    };

}


#endif //EFFECTIVE_CPP_2_COMPUTER_HPP
